home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue25 / mfboid1s / MFBOID1S.ZIP / StrFunctions.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-02-01  |  2.2 KB  |  91 lines

  1. unit StrFunctions;
  2.  
  3. interface
  4.  
  5. const
  6.     TDigitsSet = ['0','1','2','3','4','5','6','7','8','9',',','-'];
  7.  
  8.   function GetBefore(sSubString, sLongString : string) : string;
  9.   function GetAfter(sSubString, sLongString : string) : string;
  10.   function GetBetween(sSubString, sLongString : string) : string;
  11.   function GetBetweenDifferent(sSubStringFirst,sSubStringSecond, sLongString : string) : string;
  12.   function GetNTh(sSubString, sLongString : string; iNumber : integer) : string;
  13.   function IsNumeric(sToken : string) : boolean;
  14.  
  15. implementation
  16.  
  17. function GetBefore(sSubString, sLongString : string) : string;
  18. var
  19.   i : integer;
  20. begin
  21.   i := Pos(sSubString, sLongString);
  22.   if i <> 0 then
  23.     GetBefore := Copy(sLongString,0, i-1)
  24.   else
  25.     GetBefore := '';
  26. end;
  27.  
  28. function GetAfter(sSubString, sLongString : string) : string;
  29. var
  30.   i : integer;
  31. begin
  32.   i := Pos(sSubString, sLongString);
  33.   if i <> 0 then
  34.     GetAfter := Copy(sLongString,i+1, Length(sLongString)-i)
  35.   else
  36.     GetAfter := '';
  37. end;
  38.  
  39. function GetBetween(sSubString, sLongString : string) : string;
  40. begin
  41.   GetBetween := GetBefore(sSubString,GetAfter(sSubString,sLongString));
  42. end;
  43.  
  44. function GetBetweenDifferent(sSubStringFirst,sSubStringSecond, sLongString : string) : string;
  45. begin
  46.   GetBetweenDifferent := GetBefore(sSubStringSecond,GetAfter(sSubStringFirst,sLongString));
  47. end;
  48.  
  49. function GetNTh(sSubString, sLongString : string; iNumber : integer) : string;
  50. var
  51.   i           : integer;
  52.   sLongLeft   : string;
  53.   sTempResult : string;
  54. begin
  55.   sLongLeft := sLongString;
  56.   sLongLeft := sLongLeft + ',';
  57.  
  58.   for i := 0 to iNumber do
  59.   begin
  60.     sTempResult := GetBefore(sSubString, sLongLeft);
  61.     sLongLeft := GetAfter(sSubString, sLongLeft);
  62.   end;
  63.  
  64.   GetNth := sTempResult;
  65. end;
  66.  
  67. function IsNumeric(sToken : string) : boolean;
  68. var
  69.   i       : integer;
  70.   bResult : boolean;
  71. begin
  72.   if Length(sToken) > 0 then
  73.   begin
  74.     bResult := true;
  75.     for i := 1 to Length(sToken) do
  76.     begin
  77.       if not (sToken[i] in TDigitsSet) then
  78.       begin
  79.         bResult := false;
  80.         break;
  81.       end;
  82.     end;
  83.   end else bResult := false;
  84.  
  85.   if (sToken = '.') or (sToken = '-') or  (sToken = '+') then
  86.       bResult := false; 
  87.  
  88.   IsNumeric := bResult;
  89. end;
  90. end.
  91.